﻿using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Tilemaps;

public class Lesson5 : MonoBehaviour
{
    // 使用前要引用命名空间
    // 瓦片格子
    public Tilemap tilemap;
    // 格子位置相关
    public Grid grid;
    // 瓦片资源基类
    public TileBase tileBase;

    // Start is called before the first frame update
    void Start()
    {

        #region 重要api
        // 清除所有瓦片
        //tilemap.ClearAllTiles();

        // 获取指定坐标格子
        TileBase tile = tilemap.GetTile(new Vector3Int(5, 2, 0));
        // 如果没有格子 得到的是null
        print(tile);

        // 设置或者删除瓦片
        tilemap.SetTile(new Vector3Int(0, 2, 0), tileBase);

        tilemap.SetTile(new Vector3Int(-3, -2, 0), null);

        // 传位置数组
        //tilemap.SetTiles()

        // 替换瓦片(批量替换 把一种类型的瓦片全换成另一种)
        //tilemap.SwapTile(tile, tileBase);

        // 世界坐标转格子坐标
        // 传入的参数是世界坐标 可以屏幕坐标转世界坐标
        //grid.WorldToCell()

        Tilemap.tilemapTileChanged += Tilemap_tilemapTileChanged;

        #endregion
    }

    private void Tilemap_tilemapTileChanged(Tilemap arg1, Tilemap.SyncTile[] arg2)
    {
        Debug.Log(arg1);
        for (int i = 0; i < arg2.Length; i++)
        {
            Debug.Log(arg2[i].tile.name);
        }
    }

    // Update is called once per frame
    void Update()
    {
        if (Input.GetMouseButtonDown(0))
        {
            Vector3 worldPos = Camera.main.ScreenToWorldPoint(Input.mousePosition);
            Vector3Int tilePos = grid.WorldToCell(worldPos);
            TileBase tileBase = tilemap.GetTile(tilePos);
            if (tileBase != null && tileBase.name != this.tileBase.name)
                tilemap.SwapTile(tileBase, this.tileBase);
            else
                tilemap.SetTile(tilePos, this.tileBase);
        }
    }
}
